Apache Flink এ Time Windows স্ট্রিম প্রসেসিংয়ের একটি গুরুত্বপূর্ণ অংশ, যা ডেটা স্ট্রিমকে নির্দিষ্ট সময়ের ইন্টারভালে বিভক্ত করে প্রসেস করতে সহায়তা করে। Flink এ তিনটি প্রধান ধরনের উইন্ডো রয়েছে: Tumbling Windows, Sliding Windows, এবং Session Windows। এদের প্রত্যেকটি ভিন্ন ধরণের ডেটা প্রসেসিং কেসের জন্য ব্যবহৃত হয়।
Tumbling Windows হল স্থির দৈর্ঘ্যের উইন্ডো যা ওভারল্যাপ ছাড়াই একটির পর একটি নির্দিষ্ট সময়ের পরপর তৈরি হয়। Tumbling উইন্ডো একটি নির্দিষ্ট সময় পরিসরে সমস্ত ডেটা সংগ্রহ করে এবং তারপর সেই উইন্ডো বন্ধ হয় ও প্রসেসিং হয়। নতুন উইন্ডো শুরু হওয়ার আগে পুরোনো উইন্ডো সম্পূর্ণরূপে বন্ধ হয়।
DataStream<Tuple2<String, Integer>> windowCounts = input
.keyBy(value -> value.f0)
.window(TumblingEventTimeWindows.of(Time.seconds(5)))
.sum(1);
উপরের উদাহরণে, TumblingEventTimeWindows.of(Time.seconds(5))
প্রতি ৫ সেকেন্ডের জন্য একটি উইন্ডো তৈরি করে।
Sliding Windows Tumbling Windows এর মতই কাজ করে, তবে এটি স্থির দৈর্ঘ্যের উইন্ডো যা ওভারল্যাপ করে। Sliding Windows এর দুটি প্যারামিটার থাকে: উইন্ডোর দৈর্ঘ্য এবং উইন্ডোর স্লাইড ইন্টারভাল। উইন্ডোর স্লাইড ইন্টারভাল যদি উইন্ডোর দৈর্ঘ্যের চেয়ে ছোট হয়, তবে উইন্ডোগুলি একে অপরকে ওভারল্যাপ করে। এটি একটি ইভেন্ট একাধিক উইন্ডোতে অন্তর্ভুক্ত হতে দেয়।
DataStream<Tuple2<String, Integer>> windowCounts = input
.keyBy(value -> value.f0)
.window(SlidingEventTimeWindows.of(Time.minutes(1), Time.seconds(10)))
.sum(1);
এই উদাহরণে, উইন্ডো প্রতি ১ মিনিটের জন্য তৈরি হয়, এবং প্রতি ১০ সেকেন্ডে স্লাইড করে। ফলে, একাধিক উইন্ডো একে অপরকে ওভারল্যাপ করবে।
Session Windows হল ডেটা স্ট্রিমে সেশন শনাক্ত করার জন্য ব্যবহৃত হয়। এটি স্ট্রিমের মধ্যে ইভেন্টগুলির মধ্যে inactivity gap বা নির্দিষ্ট সময়ের বিরতি (gap) এর উপর ভিত্তি করে উইন্ডো তৈরি করে। যদি একটি নির্দিষ্ট সময়ের মধ্যে কোনো ইভেন্ট না ঘটে, তবে উইন্ডোটি বন্ধ হয় এবং একটি নতুন সেশন শুরু হয়।
DataStream<Tuple2<String, Integer>> windowCounts = input
.keyBy(value -> value.f0)
.window(ProcessingTimeSessionWindows.withGap(Time.seconds(30)))
.sum(1);
এই উদাহরণে, ProcessingTimeSessionWindows.withGap(Time.seconds(30))
একটি সেশন উইন্ডো তৈরি করে, যা তখনই বন্ধ হবে যদি ৩০ সেকেন্ডের মধ্যে কোনো নতুন ইভেন্ট না ঘটে।
Flink এর Time Windows ব্যবহার করে আপনি বিভিন্ন ধরণের ডেটা এনালাইসিস করতে পারেন, যেমন রিয়েল-টাইম এনালাইসিস, ব্যাচ প্রসেসিং, এবং সেশন ভিত্তিক এনালাইসিস।
আরও দেখুন...